package newLeetCode.digui;

import org.junit.jupiter.api.Test;

/**
 * @author moso
 * @Date 2025/6/7 20:12
 */

public class PaLouTi {
    /**
     * 70. 爬楼梯
     * 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
     * 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢？
     * 示例 1：
     *
     * 输入：n = 2
     * 输出：2
     * 解释：有两种方法可以爬到楼顶。
     * 1. 1 阶 + 1 阶
     * 2. 2 阶
     * 示例 2：
     *
     * 输入：n = 3
     * 输出：3
     * 解释：有三种方法可以爬到楼顶。
     * 1. 1 阶 + 1 阶 + 1 阶
     * 2. 1 阶 + 2 阶
     * 3. 2 阶 + 1 阶
     */

    public int pa(int n) throws InterruptedException {
        if (n == 1){
            return  1;
        }else if (n == 2){
            return  2;
        }
        Thread.sleep(300);
        return   pa(n-1) + pa(n-2);

    }
    @Test
    void testPalouti() throws InterruptedException {
        int res = pa(10173);
        System.out.println(res);

    }

    /**
     * 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
     *
     * 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶？
     *
     * 🧪 示例：
     * text
     * 复制
     * 编辑
     * 输入：n = 2
     * 输出：2
     * 解释：有两种方法可以爬到楼顶。
     * 1. 1 阶 + 1 阶
     * 2. 2 阶
     * text
     * 复制
     * 编辑
     * 输入：n = 3
     * 输出：3
     * 解释：有三种方法可以爬到楼顶。
     * 1. 1 阶 + 1 阶 + 1 阶
     * 2. 1 阶 + 2 阶
     * 3. 2 阶 + 1 阶
     */
    public int palouti2(int n){
        if (n == 1){
            return 1;
        } else if (n == 2) {
            return 2;
        }
        return palouti2(n - 2) + palouti2(n - 1);
    }

    @Test
    void  test2(){
        int n = palouti2(10);
        System.out.println(n);
    }



























}
